Support resetting cell renderer colors with NULL again
authorMatthias Clasen <mclasen@redhat.com>
Mon, 25 Oct 2010 15:17:24 +0000 (11:17 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 25 Oct 2010 15:17:24 +0000 (11:17 -0400)
This functionality was lost when GdkRGBA was introduced.

Bug 632936

gtk/gtkcellrenderer.c
gtk/gtkcellrenderertext.c

index 8da6f96985c62236b8edd2b2e9326b4d416d055a..3656599483bab473de70fd969037961e48994d0c 100644 (file)
@@ -493,28 +493,36 @@ gtk_cell_renderer_set_property (GObject      *object,
       {
         GdkRGBA rgba;
 
-       if (!g_value_get_string (value))
-         set_cell_bg_color (cell, NULL);
-       else if (gdk_rgba_parse (g_value_get_string (value), &rgba))
-         set_cell_bg_color (cell, &rgba);
-       else
-         g_warning ("Don't know color `%s'", g_value_get_string (value));
-
-       g_object_notify (object, "cell-background-gdk");
+        if (!g_value_get_string (value))
+          set_cell_bg_color (cell, NULL);
+        else if (gdk_rgba_parse (g_value_get_string (value), &rgba))
+          set_cell_bg_color (cell, &rgba);
+        else
+          g_warning ("Don't know color `%s'", g_value_get_string (value));
+
+        g_object_notify (object, "cell-background-gdk");
       }
       break;
     case PROP_CELL_BACKGROUND_GDK:
       {
         GdkColor *color;
-        GdkRGBA rgba;
 
         color = g_value_get_boxed (value);
-        rgba.red = color->red / 65535.;
-        rgba.green = color->green / 65535.;
-        rgba.blue = color->blue / 65535.;
-        rgba.alpha = 1;
-
-        set_cell_bg_color (cell, &rgba);
+        if (color)
+          {
+            GdkRGBA rgba;
+
+            rgba.red = color->red / 65535.;
+            rgba.green = color->green / 65535.;
+            rgba.blue = color->blue / 65535.;
+            rgba.alpha = 1;
+
+            set_cell_bg_color (cell, &rgba);
+          }
+        else
+          {
+            set_cell_bg_color (cell, NULL);
+          }
       }
       break;
     case PROP_CELL_BACKGROUND_RGBA:
@@ -539,9 +547,9 @@ set_cell_bg_color (GtkCellRenderer *cell,
     {
       if (!priv->cell_background_set)
         {
-         priv->cell_background_set = TRUE;
-         g_object_notify (G_OBJECT (cell), "cell-background-set");
-       }
+          priv->cell_background_set = TRUE;
+          g_object_notify (G_OBJECT (cell), "cell-background-set");
+        }
 
       priv->cell_background = *rgba;
     }
index 0313d16ecc5388126cd39b2a27e2843002d1cfc6..f5945cc8813563508fbe63411057a3ee6c1705ba 100644 (file)
@@ -1206,28 +1206,46 @@ gtk_cell_renderer_text_set_property (GObject      *object,
     case PROP_BACKGROUND_GDK:
       {
         GdkColor *color;
-        GdkRGBA rgba;
 
         color = g_value_get_boxed (value);
-        rgba.red = color->red / 65535.;
-        rgba.green = color->green / 65535.;
-        rgba.blue = color->blue / 65535.;
+        if (color)
+          {
+            GdkRGBA rgba;
+
+            rgba.red = color->red / 65535.;
+            rgba.green = color->green / 65535.;
+            rgba.blue = color->blue / 65535.;
+            rgba.alpha = 1;
 
-        set_bg_color (celltext, &rgba);
+            set_bg_color (celltext, &rgba);
+          }
+        else
+          {
+            set_bg_color (celltext, NULL);
+          }
       }
       break;
 
     case PROP_FOREGROUND_GDK:
       {
         GdkColor *color;
-        GdkRGBA rgba;
 
         color = g_value_get_boxed (value);
-        rgba.red = color->red / 65535.;
-        rgba.green = color->green / 65535.;
-        rgba.blue = color->blue / 65535.;
+        if (color)
+          {
+            GdkRGBA rgba;
+
+            rgba.red = color->red / 65535.;
+            rgba.green = color->green / 65535.;
+            rgba.blue = color->blue / 65535.;
+            rgba.alpha = 1;
 
-        set_fg_color (celltext, &rgba);
+            set_fg_color (celltext, &rgba);
+          }
+        else
+          {
+            set_fg_color (celltext, NULL);
+          }
       }
       break;